#include <iostream>

// /*饿汉模式: 异空间换时间*/
// class Singleton
// {
// private:
//     static Singleton _eton;
//     Singleton()
//         :_data(99)
//     {
//         std::cout << "单例对象构建" << std::endl;
//     }

//     ~Singleton()   {}

//     Singleton(const Singleton& ) = delete;
// private:
//     int _data;
// public:
//     static Singleton & getInstance()
//     {
//         return _eton;
//     }
//     int getData()   {return _data;}
// };
// Singleton Singleton::_eton;



/*懒汉模式: 用的时候在实例化*/
class Singleton
{
private:
    Singleton() :_data(99)
    {
        std::cout << "单例对象构造\n";
    }
    Singleton(const Singleton&) = delete;
    ~Singleton()    {}
private:
    int _data;
public:
    static Singleton& getInstance()
    {
        static Singleton _eton;
        return _eton;
    }

    int getData()
    {
        return _data;
    }
};

int main()
{
    // std::cout << Singleton::getInstance().getData() << std::endl;

    return 0;
}
